// DICOM 工具函数
import { IMAGE_LOADER_SCHEME } from '@/const/dicom';


/**
 * 封装 成 自定义的格式
 * @param {*} imageIds 
 */
export function createQiniuImageIds(imageIds){
        // 跟随页面协议构建 imageIds，避免混合内容
        const pageIsHttps = typeof window !== 'undefined' && window.location && window.location.protocol === 'https:';
        const resultImageIds = imageIds.map((ossUrl) => {
            let finalUrl = (ossUrl || '').trim();
            if (!/^https?:\/\//i.test(finalUrl)) {
                finalUrl = `${pageIsHttps ? 'https' : 'http'}://${finalUrl}`;
            }
            return `qiniu:${finalUrl}`;
        });
        return resultImageIds;
}
/**
 * 生成DICOM图像ID
 * @param {Object} instance - DICOM实例对象
 * @returns {string} 图像ID
 */
export function getDicomImageId(instance) {
  const { StudyInstanceUID, SeriesInstanceUID, SOPInstanceUID } = instance;
  return `${IMAGE_LOADER_SCHEME}:${StudyInstanceUID}/${SeriesInstanceUID}/${SOPInstanceUID}`;
}

/**
 * 解析DICOM图像ID
 * @param {string} imageId - 图像ID
 * @returns {Object} 解析后的UID对象
 */
export function parseDicomImageId(imageId) {
  const parts = imageId.replace(`${IMAGE_LOADER_SCHEME}:`, '').split('/');
  return {
    StudyInstanceUID: parts[0],
    SeriesInstanceUID: parts[1],
    SOPInstanceUID: parts[2]
  };
}

/**
 * 格式化患者姓名
 * @param {string} patientName - 原始患者姓名
 * @returns {string} 格式化后的患者姓名
 */
export function formatPatientName(patientName) {
  if (!patientName) return '';
  return patientName.replace(/\^/g, ' ').trim();
}

/**
 * 格式化日期
 * @param {string} date - DICOM日期格式 (YYYYMMDD)
 * @returns {string} 格式化后的日期 (YYYY-MM-DD)
 */
export function formatDicomDate(date) {
  if (!date || date.length !== 8) return '';
  return `${date.substring(0, 4)}-${date.substring(4, 6)}-${date.substring(6, 8)}`;
}

/**
 * 格式化时间
 * @param {string} time - DICOM时间格式 (HHMMSS)
 * @returns {string} 格式化后的时间 (HH:MM:SS)
 */
export function formatDicomTime(time) {
  if (!time || time.length < 6) return '';
  return `${time.substring(0, 2)}:${time.substring(2, 4)}:${time.substring(4, 6)}`;
}

/**
 * 获取像素间距
 * @param {Array} pixelSpacing - 像素间距数组
 * @returns {Object} 行列像素间距
 */
export function getPixelSpacing(pixelSpacing) {
  if (!pixelSpacing || pixelSpacing.length < 2) {
    return { rowPixelSpacing: 1, columnPixelSpacing: 1 };
  }
  return {
    rowPixelSpacing: parseFloat(pixelSpacing[0]),
    columnPixelSpacing: parseFloat(pixelSpacing[1])
  };
}

/**
 * 计算图像尺寸
 * @param {number} rows - 图像行数
 * @param {number} columns - 图像列数
 * @param {Array} pixelSpacing - 像素间距
 * @returns {Object} 图像物理尺寸
 */
export function calculateImageSize(rows, columns, pixelSpacing) {
  const { rowPixelSpacing, columnPixelSpacing } = getPixelSpacing(pixelSpacing);
  return {
    width: columns * columnPixelSpacing,
    height: rows * rowPixelSpacing
  };
}